const less = require('less');
const path = require('path');
const postcss = require('postcss');
const autoprefixer = require('autoprefixer');
const NpmImportPlugin = require('less-plugin-npm-import');
const { getConfig } = require('./utils/projectHelper');

function transformLess(lessContent, lessFilePath, config = {}) {
    const { cwd = process.cwd() } = config;
    const { compile: { lessConfig } = {} } = getConfig();
    const resolvedLessFile = path.resolve(cwd, lessFilePath);

    // Do less compile
    const lessOpts = {
        paths: [path.dirname(resolvedLessFile)],
        filename: resolvedLessFile,
        plugins: [new NpmImportPlugin({ prefix: '~' })],
        javascriptEnabled: true,
        ...lessConfig,
    };
    return less
        .render(lessContent, lessOpts)
        .then((result) =>
            postcss([autoprefixer]).process(result.css, { from: undefined }),
        )
        .then((r) => r.css);
}

module.exports = transformLess;
